// 把 package 目录下的所有包都进行打包

const fs = require('fs');
const execa = require('execa');  // 开启子进程 进行打包，最终还是使用 rollup 来进行打包

const targets = fs.readdirSync('packages').filter(f => {
  if (fs.statSync(`packages/${f}`).isDirectory()) {
    return false;
  }
  return true;
});

// 对我们目标进行一次打包，并行打包

async function build(target) {  // rollup
  console.log(target);
  await execa('rollup', ['-c', '--environment', `TARGET: ${target}`], 
    {stdio: 'inherit'})  // 当子进程的打包信息共享给父进程
}

function runParallel(targets, iteratorFn) {
  const res = []
  for (const item of targets) {
    const p = iteratorFn(item)
    res.push(p)
  }
  return Promise.all(res)
}

runParallel(targets, build)
